A snapshot is the state of a storage entity (e.g., storage volume) at a particular point in time. A full snapshot of a storage entity may be composed of large amounts of data (e.g., terabytes, petabytes, etc.). Performing a full snapshot of a storage entity at frequent intervals (e.g., hourly, daily) requires large amounts of storage to store the snapshots. To reduce the amount of storage required, an incremental snapshot of the storage entity may be performed between full snapshots. An incremental snapshot includes the changes that have occurred to the storage entity since the previous (full or incremental) snapshot. However, mounting a volume that includes a full snapshot and several incremental snapshots may require large amounts of storage.
For example, suppose a full snapshot of a storage entity comprised of 1 TB of data was performed at t=0 and an incremental snapshot of 100 GB of data was performed at each t, from t=1 to t=10. Some of the data from an incremental snapshot may overwrite the data from the full snapshot and/or a previous incremental snapshot. However, to recover and mount the storage entity at t=10 requires starting from the full snapshot at t=0 and adding each incremental snapshot to the storage entity until the combined snapshots reproduce the state of the storage entity at t=10. In this example, 2 TB of storage is required to recover the storage entity comprised of 1 TB at t=10.
Although the above process reduces the amount of storage required to store the backup data, if only a portion of the backed up storage entity is initially desired to be recovered, recovering and updating the full snapshot may consume inefficient amount of storage, time and processing resources.